iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 11
0
Mobile Development

IOS 基本元件運用和套件運用系列 第 11

(Day11)GCDWebServer 製作form表單功能

  • 分享至 

  • xImage
  •  

實現Form表單功能

要實現Form表單功能需用到兩個handlers:

  • GET Handler : 產生一個包含一個簡單的HTML表單響應。由於不需要HTTP請求中的body信息,因此直接用 GCDWebseerver 類。
  • POST Handler : 從用戶提交的表單獲取值,並將處理結果返回。由於需要得到HTTP請求中經過encode後的body信息中的表單值,要借助與 GCDWebServerURLEncodedFormRequest 類。
import UIKit
import GCDWebServer
class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let webServer = GCDWebServer()
        
        webServer.addHandler(forMethod: "GET", path: "/", request: GCDWebServerRequest.self, processBlock: { (request) -> GCDWebServerResponse? in
            
            let html = "<html><body>" +
                "<form name=\"input\" action=\"/\" method=\"post\" " +
                "enctype=\"application/x-www-form-urlencoded\"> " +
                "用户名: <input type=\"text\" name=\"username\">" +
                "<input type=\"submit\" value=\"提交\">" +
                "</form>" +
                "</body></html>"
            
            return GCDWebServerDataResponse(html: html)
        });
        
        //处理post请求:/(获取提交的表单数据,并返回结果)
        webServer.addHandler(forMethod: "POST", path: "/", request: GCDWebServerURLEncodedFormRequest.self, processBlock: { (request) -> GCDWebServerResponse? in
            
            let formRequest = request as! GCDWebServerURLEncodedFormRequest
            let value = formRequest.arguments["username"]
            let html = "<html><body>\(String(describing: value))</body></html>"
        
            return GCDWebServerDataResponse(html: html)
        });
        
        webServer.start(withPort: 8080, bonjourName: "GCD Web Server")
        print("服务启动成功,使用你的浏览器访问:\(webServer.serverURL!)")
    }
}

https://ithelp.ithome.com.tw/upload/images/20200924/20129678YHskwkMVpF.png
https://ithelp.ithome.com.tw/upload/images/20200924/20129678bbWHfrs2N2.png


上一篇
(Day10)GCDWebServer 進階功能
下一篇
(Day12)GCDWebServer 實現一個靜態文件目錄網站(Static Website)
系列文
IOS 基本元件運用和套件運用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言